package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseBaseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

/**
 * <p></p>
 *
 * @Description:
 */
@Api(tags = "课程基础信息api")
public interface CourseBaseApi {


    /*
     * 课程基础信息查询：
     *   1.方法名称
     *   2.传入参数
     *   3.传出参数
     * */
    @ApiOperation("课程基础信息分页条件查询")
    PageVO  queryCourseBaseList(PageRequestParams params, QueryCourseBaseModel model);


    @ApiOperation(value = "保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVo",
            value = "课程基本视图信息", required = true,
            dataType = "CourseBaseVo courseBaseVo", paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);


    @ApiOperation(value = "根据ID获取课程基本信息")
    @ApiImplicitParam(name = "courseBaseId",
            value = "课程基本信息id",
            required = true,
            dataType = "Long",
            paramType = "path",
            example = "1")
    CourseBaseDTO getCourseBase(Long courseBaseId);

    @ApiOperation(value = "更新课程基本信息")
    @ApiImplicitParam(name = "courseBaseVo",
            value = "课程基本信息vo",
            required = true,
            dataType = "CourseBaseVo",
            paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);


    @ApiOperation("根据Id删除课程信息")
    @ApiImplicitParam(name = "courseBaseId",
                        value = "课程id值",
                        required = true,
                        paramType = "path")
    void removeCourseBaseById(Long courseBaseId);

    @ApiOperation("提交审核")
    @ApiImplicitParam(name = "courseBaseId",
            value = "课程id值",
            required = true,
            dataType = "Long",
            paramType = "query",
            example = "1")
    void commitCourseBase(Long courseBaseId);

    @ApiOperation(value = "课程预览")
    Object previewCourse(Long courseId,Long companyId);

    @ApiOperation(value = "课程发布")
    void publish(Long courseBaseId);

}
